trivial-httpd: Handle the autoexit case when the docroot is a symlink
authorVivek Dasmohapatra <vivek@collabora.co.uk>
Thu, 22 Aug 2013 18:44:29 +0000 (19:44 +0100)
committerColin Walters <walters@verbum.org>
Fri, 23 Aug 2013 16:39:24 +0000 (12:39 -0400)
src/ostree/ot-builtin-trivial-httpd.c

index 3c8fff9b01760d22db322320767dcb5cf6656799..9607f4dbddf8db89f8bb89dbe17108395ab42ff0 100644 (file)
@@ -342,7 +342,23 @@ ostree_builtin_trivial_httpd (int argc, char **argv, GFile *repo_path, GCancella
   app->running = TRUE;
   if (opt_autoexit)
     {
-      dirmon = g_file_monitor_directory (app->root, 0, cancellable, error);
+      gboolean is_symlink = FALSE;
+      gs_unref_object GFileInfo *info = NULL;
+
+      info = g_file_query_info (app->root,
+                               G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK,
+                               G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+                               cancellable, error);
+      if (!info)
+        goto out;
+
+      is_symlink = g_file_info_get_is_symlink (info);
+
+      if (is_symlink)
+        dirmon = g_file_monitor_file (app->root, 0, cancellable, error);
+      else
+        dirmon = g_file_monitor_directory (app->root, 0, cancellable, error);
+
       if (!dirmon)
         goto out;
       g_signal_connect (dirmon, "changed", G_CALLBACK (on_dir_changed), app);